/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.api.db.hibernate; import java.util.Arrays; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openmrs.Obs; import org.openmrs.test.BaseContextSensitiveTest; /** * Tests for {@link org.openmrs.api.db.hibernate.HibernateObsDAO} */ public class HibernateObsDAOTest extends BaseContextSensitiveTest { private HibernateObsDAO dao = null; private SessionFactory sessionFactory = null; @Before public void setUp() { if (dao == null) // fetch the dao from the spring application context dao = (HibernateObsDAO) applicationContext.getBean("obsDAO"); sessionFactory = (SessionFactory) applicationContext.getBean("sessionFactory"); } /** * @see org.openmrs.api.db.hibernate.HibernateObsDAO#getObservations(java.util.List, java.util.List, java.util.List, java.util.List, java.util.List, java.util.List, java.util.List, Integer, Integer, java.util.Date, java.util.Date, boolean) */ @Test public void getObservations_shouldBeOrderedCorrectly() { Session session = sessionFactory.getCurrentSession(); List<Obs> obsListActual; List<Obs> obsListExpected; //Order by id desc obsListExpected = session.createCriteria(Obs.class, "obs").addOrder(Order.desc("id")).list(); obsListActual = dao.getObservations(null, null, null, null, null, null, Arrays.asList("id"), null, null, null, null, false, null); Assert.assertArrayEquals(obsListExpected.toArray(), obsListActual.toArray()); obsListActual = dao.getObservations(null, null, null, null, null, null, Arrays.asList("id desc"), null, null, null, null, false, null); Assert.assertArrayEquals(obsListExpected.toArray(), obsListActual.toArray()); //Order by id asc obsListExpected = session.createCriteria(Obs.class, "obs").addOrder(Order.asc("id")).list(); obsListActual = dao.getObservations(null, null, null, null, null, null, Arrays.asList("id asc"), null, null, null, null, false, null); Assert.assertArrayEquals(obsListExpected.toArray(), obsListActual.toArray()); //Order by person_id asc and id desc obsListExpected = session.createCriteria(Obs.class, "obs").addOrder(Order.asc("person.id")).addOrder( Order.desc("id")).list(); obsListActual = dao.getObservations(null, null, null, null, null, null, Arrays.asList("person.id asc", "id"), null, null, null, null, false, null); Assert.assertArrayEquals(obsListExpected.toArray(), obsListActual.toArray()); //Order by person_id asc and id asc obsListExpected = session.createCriteria(Obs.class, "obs").addOrder(Order.asc("person.id")) .addOrder(Order.asc("id")).list(); obsListActual = dao.getObservations(null, null, null, null, null, null, Arrays.asList("person.id asc", "id asc"), null, null, null, null, false, null); Assert.assertArrayEquals(obsListExpected.toArray(), obsListActual.toArray()); } }